package view;


import javax.swing.JPanel;

import javax.swing.JDialog;
import javax.swing.JLabel;

import java.awt.Rectangle;
import java.net.InetAddress;
import java.net.UnknownHostException;

import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JButton;

import controle.ControladorGUI;
import java.awt.Font;
import java.awt.Color;

public class DialogCriarPartida extends JDialog {

	private FramePrincipal frame = null;
	private ControladorGUI ctrl;
	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JLabel apelido_jl = null;
	private JTextField apelido_tf = null;
	private JLabel nomePartida_jl = null;
	private JTextField nomePartida_tf = null;
	private JLabel quantidadeJogadores_jl = null;
	private JComboBox quantidadeJogadores_cb = null;
	private JButton criar_jb = null;
	private JComboBox coresPeao = null;
	
	/**
	 * @param owner
	 */
	public DialogCriarPartida(FramePrincipal owner,ControladorGUI ctrl_par) {
		super(owner);
		initialize();
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		frame = owner;
		ctrl=ctrl_par;
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(427, 360);
		this.setContentPane(getJContentPane());
		this.setTitle("Criar Partida");
		this.setResizable(false);
		this.setLocationRelativeTo(null);
		this.addWindowListener(new java.awt.event.WindowAdapter() {
			public void windowClosing(java.awt.event.WindowEvent e) {
				frame.setVisible(true);
			}
		});
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			quantidadeJogadores_jl = new JLabel();
			quantidadeJogadores_jl.setFont(new Font("Tahoma", Font.PLAIN, 14));
			quantidadeJogadores_jl.setBounds(new Rectangle(33, 122, 174, 22));
			quantidadeJogadores_jl.setText("N\u00FAmero de Jogadores:");
			nomePartida_jl = new JLabel();
			nomePartida_jl.setFont(new Font("Tahoma", Font.PLAIN, 14));
			nomePartida_jl.setBounds(new Rectangle(33, 57, 174, 22));
			nomePartida_jl.setText("Nome da Partida:");
			apelido_jl = new JLabel();
			apelido_jl.setFont(new Font("Tahoma", Font.PLAIN, 14));
			apelido_jl.setBounds(new Rectangle(33, 163, 174, 22));
			apelido_jl.setText("Seu apelido:");
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(apelido_jl, null);
			jContentPane.add(getApelido_tf(), null);
			jContentPane.add(nomePartida_jl, null);
			jContentPane.add(getNomePartida_tf(), null);
			jContentPane.add(quantidadeJogadores_jl, null);
			jContentPane.add(getQuantidadeJogadores_cb(), null);
			jContentPane.add(getCriar_jb(), null);
			
			JLabel lblCorDoPeo = new JLabel("Cor do Pe\u00E3o:");
			lblCorDoPeo.setFont(new Font("Tahoma", Font.PLAIN, 14));
			lblCorDoPeo.setBounds(33, 207, 174, 22);
			jContentPane.add(lblCorDoPeo);
			
			coresPeao = new JComboBox();
			coresPeao.setBounds(236, 210, 146, 22);
			coresPeao.addItem("Amarelo");
			coresPeao.addItem("Azul");
			coresPeao.addItem("Branco");
			coresPeao.addItem("Preto");
			coresPeao.addItem("Laranja");
			coresPeao.addItem("Vermelho");
			
			jContentPane.add(coresPeao);
		}
		return jContentPane;
	}

	/**
	 * This method initializes apelido_tf	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getApelido_tf() {
		if (apelido_tf == null) {
			apelido_tf = new JTextField();
			apelido_tf.setBounds(new Rectangle(236, 165, 146, 22));
		}
		return apelido_tf;
	}

	/**
	 * This method initializes nomePartida_tf	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getNomePartida_tf() {
		if (nomePartida_tf == null) {
			nomePartida_tf = new JTextField();
			nomePartida_tf.setBounds(new Rectangle(236, 57, 146, 22));
		}
		return nomePartida_tf;
	}

	/**
	 * This method initializes quantidadeJogadores_cb	
	 * 	
	 * @return javax.swing.JComboBox	
	 */
	private JComboBox getQuantidadeJogadores_cb() {
		if (quantidadeJogadores_cb == null) {
			quantidadeJogadores_cb = new JComboBox();
			quantidadeJogadores_cb.addItem(2);
			quantidadeJogadores_cb.addItem(3);
			quantidadeJogadores_cb.addItem(4);
			quantidadeJogadores_cb.addItem(5);
			quantidadeJogadores_cb.addItem(6);
			quantidadeJogadores_cb.setBounds(new Rectangle(236, 122, 146, 22));
		}
		return quantidadeJogadores_cb;
	}

	/**
	 * This method initializes criar_jb	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getCriar_jb() {
		if (criar_jb == null) {
			criar_jb = new JButton();
			criar_jb.setBackground(new Color(0, 128, 0));
			criar_jb.setFont(new Font("Tahoma", Font.PLAIN, 14));
			criar_jb.setText("Criar Partida");
			criar_jb.setBounds(new Rectangle(132, 270, 174, 37));
			criar_jb.addMouseListener(new java.awt.event.MouseAdapter() {
				public void mouseClicked(java.awt.event.MouseEvent e) {
					criarPartida();
				}
			});
		}
		return criar_jb;
	}
	
	private void criarPartida(){
		
		String quantidadeJogadores = quantidadeJogadores_cb.getSelectedItem().toString();
		String apelido = apelido_tf.getText();
		String nomePartida = nomePartida_tf.getText();
		
		if(apelido.equals("") || nomePartida.equals("")){
			JOptionPane.showMessageDialog(null, "Informe seu Apelido e o Nome da Partida!");
			return;
		}
		
		try {
			ctrl.getSons().getAudioAbertura().stop();
			String corJogador = (String)coresPeao.getSelectedItem();
			
			ctrl.inicializarServidor(corJogador, 
					InetAddress.getLocalHost().getHostAddress().toString(), 
					quantidadeJogadores,nomePartida);
			
			System.out.println("O jogador "+corJogador+ " entrou!");
			
			this.setVisible(false);						// finalizar o dialog.
			
		} catch (UnknownHostException e) {
			System.out.println("merda1");
			JOptionPane.showMessageDialog(this, e.getMessage());
		}
	}
}  //  @jve:decl-index=0:visual-constraint="25,16"
